package com.linkgie.galaxyframework.binaryserialize;

/**
 * 键值操作的数据类型；
 * 
 * @author huanghaiquan
 *
 */
public enum PrimitiveType {

	/**
	 * 空；
	 */
	NIL(TypeCode.NIL),

	/**
	 * 布尔型；
	 */
	BOOLEAN(TypeCode.BOOLEAN),

	/**
	 * 8位的整数：
	 */
	INT8(TypeCode.INT8),

	/**
	 * 16位整数；
	 */
	INT16(TypeCode.INT16),

	/**
	 * 32位整数；
	 */
	INT32(TypeCode.INT32),

	/**
	 * 64位整数；
	 */
	INT64(TypeCode.INT64),

	/**
	 * 文本；
	 */
	TEXT(TypeCode.TEXT),

	/**
	 * 二进制数据；
	 */
	BYTES(TypeCode.BYTES);

	public final byte CODE;

	private PrimitiveType(byte code) {
		this.CODE = code;
	}

	public static PrimitiveType valueOf(byte code) {
		for (PrimitiveType dataType : PrimitiveType.values()) {
			if (dataType.CODE == code) {
				return dataType;
			}
		}
		throw new IllegalArgumentException("Code[" + code + "] not suppported by PrimitiveType!");
	}

}
